Vue 4【简单的全局组件和局部组件】

全局组件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>

<!--引入vue.js-->
<script src="./vue.js"></script>

</head>
<body>
<div id="app">
请输入要显示的列表: <input type="text" v-model="inputValue"></input> <!-- 使用v-model进行数据的双向绑定 -->
<button v-on:click="submitBtn">确认</button> <!-- 使用v-on:click定义一个onclick点击事件 -->
<ul>
<!-- <li v-for="item in list_data">{{ item }}</li> 之前是使用v-for循环出数据,现在我们用组件的方式实现 -->
<todo-item v-bind:content="item" v-for="item in list_data"> </todo-item>
<!-- todo-item是我们定义的组件,下面定义的名称是TodoItem,我们要使用-将驼峰分开。内容是组件中定义的template,循环的次数受
list_data的影响。使用v-bind将list_data每个item的数据通过content传递到组件内 -->
</ul>
</div>

<script type="text/javascript">
// 全局组件
Vue.component("TodoItem", {
props:['content'], //使用props来接受组件外传来的参数,其中content就是传来的
template:"<li> {{ content }} </li>" //显示传来的内容
})

var app = new Vue({ // 实例化一个Vue
el: "#app", // 使用el绑定
data :{
"list_data": ["1111", '2222', '3333'], // 初始赋值
"inputValue" : ""
},
methods:{
submitBtn: function(){ // 定义一个onclick点击方法
// alert(this.inputValue) // 取到文本框中绑定的值
this.list_data.push(this.inputValue) // 将文本框中输入值放入到循环显示的列表中
this.inputValue = "" // 将文本框清空
}
}
})
</script>
</body>
</html>

局部组件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>

<!--引入vue.js-->
<script src="./vue.js"></script>

</head>
<body>
<div id="app">
请输入要显示的列表: <input type="text" v-model="inputValue"></input> <!-- 使用v-model进行数据的双向绑定 -->
<button v-on:click="submitBtn">确认</button> <!-- 使用v-on:click定义一个onclick点击事件 -->
<ul>
<!-- <li v-for="item in list_data">{{ item }}</li> 之前是使用v-for循环出数据,现在我们用组件的方式实现 -->
<todo-item v-bind:content="item" v-for="item in list_data"> </todo-item>
<!-- todo-item是我们定义的组件,下面定义的名称是TodoItem,我们要使用-将驼峰分开。内容是组件中定义的template,循环的次数受
list_data的影响。使用v-bind将list_data每个item的数据通过content传递到组件内 -->
</ul>
</div>

<script type="text/javascript">

// 局部组件
var TodoItem = {
props:['content'], //使用props来接受组件外传来的参数,其中content就是传来的
template:"<li> {{ content }} </li>" //显示传来的内容
}

var app = new Vue({ // 实例化一个Vue
el: "#app", // 使用el绑定
data :{
"list_data": ["1111", '2222', '3333'], // 初始赋值
"inputValue" : ""
},
methods:{
submitBtn: function(){ // 定义一个onclick点击方法
// alert(this.inputValue) // 取到文本框中绑定的值
this.list_data.push(this.inputValue) // 将文本框中输入值放入到循环显示的列表中
this.inputValue = "" // 将文本框清空
}
},
components:{ // 注册局部组件
TodoItem:TodoItem
}
})
</script>
</body>
</html>